#ifndef LJF
#define LJF

#include "stdio.h"
#include "../../lib/algo/Travail.h"
#include <vector>
#include <map>
#include <string>
#include <sstream>
#include <iostream>

using namespace std;

class Ljf {
	
	vector<Travail> travails;
	typedef map<string, float> Exec;
	typedef multimap<float, float> FFMMap;

	float cMax;
	Travail travail;
	float minBis;

	public:
		// fonction principale pour cet algo
		void applyLjf(vector<Travail> travails);
		// fonction qui cherche le minimum
		float findMin(Exec mExec, float & minBis); 
		float findMinBis(Exec mExec, float & minBis, float min);
		// fonc. qui va compter le nombre des travaux qui finisse en meme temps 
		float compter(Exec mExec, float min); 
		// fonc. retourne la liste des machines sur les quelles on pourra exec. nos TX. @arg MMAP, nbrMachine que Travail a besoin
		vector<string> listeMachineLibre(FFMMap nbrMLibre, Exec mExec, float nbrMachine); 
		// fonc. faisant l'execution des travaux
		map<string, float> faireExecuter(Exec mExec, vector<string> lML, Travail travail); 
};

#endif
